<?php
/**
 * @desc Alle Funktionen zum Steuern von Anfragen an das System
 */
class router_system
{
	var $_model = array(); //zur Ablage registrierte Modele - siehe config.ini
	var $_view; //View Objekt

	/**
	 * @dec Initialisierung registrierte Modelle laden und self::router auführen 
	 */
	public function __construct()
	{
		$config = config_system::getInstance()->getConfig('module','model');
		$this->_model = $config;
		$this->_view = view_system::getInstance();
		self::router();
	}

	/**
	 * @desc prüft ob über $_SERVER['REQUEST_URI'] gestellte Anfrage und läd falls
	 * angemeldet entsprechende Controller und initialisiert diese
	 */
	public function router()
	{
		$parse_url  = parse_url($_SERVER['REQUEST_URI']);
		$path       = explode('/',substr($parse_url["path"],1));

		if(!empty($path[0]))
		{
			//Default Action: legt indexAction als Default fest.
			$action = 'index';
			if(isset($path[1]) && !empty($path[1]))
			{
				$action = trim($path[1]);
			}

			//Model?
			$array_flip = array_flip($this->_model);
			if(key_exists(trim($path[0]),$array_flip))
			{

				//$init_model      = 'model_'.trim($path[0]);
				$init_controller = 'controller_'.trim($path[0]);

				//$model          = new $init_model();
				$controller     = new $init_controller();
			
				//Action:
				if(method_exists($controller,$action.'Action'))
				{
					$function_name = $action.'Action';
					$controller->$function_name();

				}
			}
		}
		else
		{
			//Startseite
		}
	}
}
